﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ProyectoBastanteo.Dominio;
using System.Data.SqlClient;



namespace ProyectoBastanteo.Persistencia
{
    public class RepresentanteDAO 
    {

        private ClienteDAO ClieDAO = new ClienteDAO();
        public ProyectoBastanteo.Dominio.Representante Crear(ProyectoBastanteo.Dominio.Representante RepresentanteACrear)
        {
            string sentencia = "INSERT INTO Representantes VALUES (@codclie,@nombrep,@tidorep,@nudorep,@cargrep,@gruprep)";

            using (SqlConnection conexion = new SqlConnection(Coneccion.ObtenerCadena()))
            {
                conexion.Open();
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    comando.Parameters.Add(new SqlParameter("@codclie", RepresentanteACrear.codclie.codclie));
                    comando.Parameters.Add(new SqlParameter("@nombrep", RepresentanteACrear.nombrep));
                    comando.Parameters.Add(new SqlParameter("@tidorep", RepresentanteACrear.tidorep));
                    comando.Parameters.Add(new SqlParameter("@nudorep", RepresentanteACrear.nudorep));
                    comando.Parameters.Add(new SqlParameter("@cargrep", RepresentanteACrear.cargrep));
                    comando.Parameters.Add(new SqlParameter("@gruprep", RepresentanteACrear.gruprep));
                    comando.ExecuteNonQuery();
                }
            }

            return RepresentanteACrear;
            
        }
        public Representante Obtener(string nudorep)
        {
            Representante RepresentanteAObt = null;
            using (SqlConnection conexion = new SqlConnection(Coneccion.ObtenerCadena()))
            {
                conexion.Open();
                string sentencia = "SELECT * from representantes WHERE nudorep=@nudorep";
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    comando.Parameters.AddWithValue("@nudorep", nudorep);
                    SqlDataReader resultado = comando.ExecuteReader();
                    if (resultado.Read())
                    {
                        RepresentanteAObt = new Representante();
                        RepresentanteAObt.codclie = ClieDAO.Obtener(int.Parse(resultado["codclie"].ToString()));
                        RepresentanteAObt.tidorep = (string)resultado["tidorep"];
                        RepresentanteAObt.nudorep = (string)resultado["nudorep"];
                        RepresentanteAObt.nombrep = (string)resultado["nombrep"];
                        RepresentanteAObt.cargrep = (string)resultado["cargrep"];
                        RepresentanteAObt.gruprep = (string)resultado["gruprep"];

                    }
                }
            }
            return RepresentanteAObt;
        }


        public Representante Modificar(Representante RepresentanteAMod)
        {
            string sentencia = "UPDATE Representantes SET nombrep=@nombrep,tidorep=@tidorep,cargrep=@cargrep,gruprep = @gruprep WHERE nudorep = @nudorep";
            using (SqlConnection conexion = new SqlConnection(Coneccion.ObtenerCadena()))
            {
                conexion.Open();
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    comando.Parameters.Add(new SqlParameter("@nombrep", RepresentanteAMod.nombrep));
                    comando.Parameters.Add(new SqlParameter("@tidorep", RepresentanteAMod.tidorep));
                    comando.Parameters.Add(new SqlParameter("@cargrep", RepresentanteAMod.cargrep));
                    comando.Parameters.Add(new SqlParameter("@gruprep", RepresentanteAMod.gruprep));
                    comando.Parameters.Add(new SqlParameter("@nudorep", RepresentanteAMod.nudorep));
                    comando.ExecuteNonQuery();
                }
            }
            return Obtener(RepresentanteAMod.nudorep);
        }


        public void Eliminar(Representante RepresentanteAElim)
        {
            string sentencia = "DELETE FROM Representantes WHERE nudorep=@nudorep";
            using (SqlConnection conexion = new SqlConnection(Coneccion.ObtenerCadena()))
            {
                conexion.Open();
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    comando.Parameters.Add(new SqlParameter("@nudorep", RepresentanteAElim.nudorep));
                    comando.ExecuteNonQuery();
                }
            }
        }


        public ICollection<Representante> ListarTodos()
        {
            ICollection<Representante> RepresentantesExistentes = new List<Representante>();
            Representante RepresentanteExist = null;
            string sentencia = "SELECT * FROM Representantes";
            using (SqlConnection conexion = new SqlConnection(Coneccion.ObtenerCadena()))
            {
                conexion.Open();
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    SqlDataReader resultado = comando.ExecuteReader();
                    while (resultado.Read())
                    {
                        RepresentanteExist = new Representante();
                        RepresentanteExist.codclie = ClieDAO.Obtener(int.Parse(resultado["codclie"].ToString()));
                        RepresentanteExist.tidorep = (string)resultado["tidorep"];
                        RepresentanteExist.nudorep = (string)resultado["nudorep"];
                        RepresentanteExist.nombrep = (string)resultado["nombrep"];
                        RepresentanteExist.cargrep = (string)resultado["cargrep"];
                        RepresentanteExist.gruprep = (string)resultado["gruprep"];
                        RepresentantesExistentes.Add(RepresentanteExist);
                    }
                }
            }
            return RepresentantesExistentes;
        }

        public Representante ObtenerNudorep(int codclie, string tidorep, string nudorep )
        {
            Representante RepresentanteExist = null;
            string sentencia = "SELECT * FROM Representantes WHERE codclie=@codclie and tidorep=@tidorep and nudorep=@nudorep";
            using (SqlConnection conexion = new SqlConnection(Coneccion.ObtenerCadena()))
            {
                conexion.Open();
                using (SqlCommand comando = new SqlCommand(sentencia, conexion))
                {
                    comando.Parameters.Add(new SqlParameter("@codclie", codclie));
                    comando.Parameters.Add(new SqlParameter("@tidorep", tidorep));
                    comando.Parameters.Add(new SqlParameter("@nudorep", nudorep));

                    SqlDataReader resultado = comando.ExecuteReader();
                    if (resultado.Read())
                    {
                        RepresentanteExist = new Representante();
                        RepresentanteExist.codclie = ClieDAO.Obtener(int.Parse(resultado["codclie"].ToString()));
                        RepresentanteExist.tidorep = (string)resultado["tidorep"];
                        RepresentanteExist.nudorep = (string)resultado["nudorep"];
                        RepresentanteExist.nombrep = (string)resultado["nombrep"];
                        RepresentanteExist.cargrep = (string)resultado["cargrep"];
                        RepresentanteExist.gruprep = (string)resultado["gruprep"];

                     }
                }
            }
            return RepresentanteExist;
        }











    }
}